home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / flash-0.4.3 / plugin / npapi.h < prev    next >
C/C++ Source or Header  |  1999-01-01  |  10KB  |  393 lines

  1. /* -*- Mode: C; tab-width: 4; -*- */
  2. /*
  3.  *  npapi.h $Revision: 1.76 $
  4.  *  Netscape client plug-in API spec
  5.  */
  6.  
  7. #ifndef _NPAPI_H_
  8. #define _NPAPI_H_
  9.  
  10. #include "jri.h"        /* Java Runtime Interface */
  11.  
  12.  
  13. /* XXX this needs to get out of here */
  14. #if defined(__MWERKS__)
  15. #ifndef XP_MAC
  16. #define XP_MAC
  17. #endif
  18. #endif
  19.  
  20.  
  21.  
  22. /*----------------------------------------------------------------------*/
  23. /*                   Plugin Version Constants                           */
  24. /*----------------------------------------------------------------------*/
  25.  
  26. #define NP_VERSION_MAJOR 0
  27. #define NP_VERSION_MINOR 9
  28.  
  29.  
  30.  
  31. /*----------------------------------------------------------------------*/
  32. /*                   Definition of Basic Types                          */
  33. /*----------------------------------------------------------------------*/
  34.  
  35. #ifndef _UINT16
  36. typedef unsigned short uint16;
  37. #endif
  38. #ifndef _UINT32
  39. #if defined(__alpha)
  40. typedef unsigned int uint32;
  41. #else /* __alpha */
  42. typedef unsigned long uint32;
  43. #endif /* __alpha */
  44. #endif
  45. #ifndef _INT16
  46. typedef short int16;
  47. #endif
  48. #ifndef _INT32
  49. #if defined(__alpha)
  50. typedef int int32;
  51. #else /* __alpha */
  52. typedef long int32;
  53. #endif /* __alpha */
  54. #endif
  55.  
  56. #ifndef FALSE
  57. #define FALSE (0)
  58. #endif
  59. #ifndef TRUE
  60. #define TRUE (1)
  61. #endif
  62. #ifndef NULL
  63. #define NULL (0L)
  64. #endif
  65.  
  66. typedef unsigned char    NPBool;
  67. typedef void*            NPEvent;
  68. typedef int16            NPError;
  69. typedef int16            NPReason;
  70. typedef char*            NPMIMEType;
  71.  
  72.  
  73.  
  74. /*----------------------------------------------------------------------*/
  75. /*                   Structures and definitions                         */
  76. /*----------------------------------------------------------------------*/
  77.  
  78. /*
  79.  *  NPP is a plug-in's opaque instance handle
  80.  */
  81. typedef struct _NPP
  82. {
  83.     void*    pdata;            /* plug-in private data */
  84.     void*    ndata;            /* netscape private data */
  85. } NPP_t;
  86.  
  87. typedef NPP_t*  NPP;
  88.  
  89.  
  90. typedef struct _NPStream
  91. {
  92.     void*        pdata;        /* plug-in private data */
  93.     void*        ndata;        /* netscape private data */
  94.     const char*        url;
  95.     uint32        end;
  96.     uint32        lastmodified;
  97.     void*        notifyData;
  98. } NPStream;
  99.  
  100.  
  101. typedef struct _NPByteRange
  102. {
  103.     int32    offset;            /* negative offset means from the end */
  104.     uint32    length;
  105.     struct _NPByteRange* next;
  106. } NPByteRange;
  107.  
  108.  
  109. typedef struct _NPSavedData
  110. {
  111.     int32    len;
  112.     void*    buf;
  113. } NPSavedData;
  114.  
  115.  
  116. typedef struct _NPRect
  117. {
  118.     uint16    top;
  119.     uint16    left;
  120.     uint16    bottom;
  121.     uint16    right;
  122. } NPRect;
  123.  
  124.  
  125. #ifdef XP_UNIX
  126. /*
  127.  * Unix specific structures and definitions
  128.  */
  129. #include <X11/Xlib.h>
  130.  
  131. /*
  132.  * Callback Structures.
  133.  *
  134.  * These are used to pass additional platform specific information.
  135.  */
  136. enum {
  137.     NP_SETWINDOW = 1
  138. };
  139.  
  140. typedef struct
  141. {
  142.     int32        type;
  143. } NPAnyCallbackStruct;
  144.  
  145. typedef struct
  146. {
  147.     int32            type;
  148.     Display*        display;
  149.     Visual*            visual;
  150.     Colormap        colormap;
  151.     unsigned int    depth;
  152. } NPSetWindowCallbackStruct;
  153.  
  154. /*
  155.  * List of variable names for which NPP_GetValue shall be implemented
  156.  */
  157. typedef enum {
  158.     NPPVpluginNameString = 1,
  159.     NPPVpluginDescriptionString
  160. } NPPVariable;
  161.  
  162. /*
  163.  * List of variable names for which NPN_GetValue is implemented by Mozilla
  164.  */
  165. typedef enum {
  166.     NPNVxDisplay = 1,
  167.     NPNVxtAppContext
  168. } NPNVariable;
  169.  
  170. #endif /* XP_UNIX */
  171.  
  172.  
  173. typedef struct _NPWindow 
  174. {
  175.     void*    window;        /* Platform specific window handle */
  176.     uint32    x;            /* Position of top left corner relative */
  177.     uint32    y;             /*    to a netscape page.                    */
  178.     uint32    width;        /* Maximum window size */
  179.     uint32    height;
  180.     NPRect    clipRect;    /* Clipping rectangle in port coordinates */
  181.                         /* Used by MAC only.                      */
  182. #ifdef XP_UNIX
  183.     void *    ws_info;    /* Platform-dependent additonal data */
  184. #endif /* XP_UNIX */
  185. } NPWindow;
  186.  
  187.  
  188. typedef struct _NPFullPrint
  189. {
  190.     NPBool    pluginPrinted;    /* Set TRUE if plugin handled fullscreen */
  191.                             /*    printing                             */
  192.     NPBool    printOne;        /* TRUE if plugin should print one copy  */
  193.                             /*    to default printer                     */
  194.     void*    platformPrint;    /* Platform-specific printing info */
  195. } NPFullPrint;
  196.  
  197. typedef struct _NPEmbedPrint
  198. {
  199.     NPWindow    window;
  200.     void*    platformPrint;    /* Platform-specific printing info */
  201. } NPEmbedPrint;
  202.  
  203. typedef struct _NPPrint
  204. {
  205.     uint16    mode;                        /* NP_FULL or NP_EMBED */
  206.     union
  207.     {
  208.         NPFullPrint        fullPrint;        /* if mode is NP_FULL */
  209.         NPEmbedPrint    embedPrint;        /* if mode is NP_EMBED */
  210.     } print;
  211. } NPPrint;
  212.  
  213.  
  214. #ifdef XP_MAC
  215. /*
  216.  *  Mac-specific structures and definitions.
  217.  */
  218.  
  219. #include <Quickdraw.h>
  220. #include <Events.h>
  221.  
  222. typedef struct NP_Port
  223. {
  224.     CGrafPtr    port;        /* Grafport */
  225.     int32        portx;        /* position inside the topmost window */
  226.     int32        porty;
  227. } NP_Port;
  228.  
  229. /*
  230.  *  Non-standard event types that can be passed to HandleEvent
  231.  */
  232. #define getFocusEvent       (osEvt + 16)
  233. #define loseFocusEvent      (osEvt + 17)
  234. #define adjustCursorEvent   (osEvt + 18)
  235.  
  236. #endif /* XP_MAC */
  237.  
  238.  
  239. /*
  240.  * Values for mode passed to NPP_New:
  241.  */
  242. #define NP_EMBED        1
  243. #define NP_FULL            2
  244.  
  245. /*
  246.  * Values for stream type passed to NPP_NewStream:
  247.  */
  248. #define NP_NORMAL        1
  249. #define NP_SEEK            2
  250. #define NP_ASFILE        3
  251. #define NP_ASFILEONLY        4
  252.  
  253. #define NP_MAXREADY    (((unsigned)(~0)<<1)>>1)
  254.  
  255.  
  256.  
  257. /*----------------------------------------------------------------------*/
  258. /*                   Error and Reason Code definitions                  */
  259. /*----------------------------------------------------------------------*/
  260.  
  261. /*
  262.  *    Values of type NPError:
  263.  */
  264. #define NPERR_BASE                            0
  265. #define NPERR_NO_ERROR                        (NPERR_BASE + 0)
  266. #define NPERR_GENERIC_ERROR                    (NPERR_BASE + 1)
  267. #define NPERR_INVALID_INSTANCE_ERROR        (NPERR_BASE + 2)
  268. #define NPERR_INVALID_FUNCTABLE_ERROR        (NPERR_BASE + 3)
  269. #define NPERR_MODULE_LOAD_FAILED_ERROR        (NPERR_BASE + 4)
  270. #define NPERR_OUT_OF_MEMORY_ERROR            (NPERR_BASE + 5)
  271. #define NPERR_INVALID_PLUGIN_ERROR            (NPERR_BASE + 6)
  272. #define NPERR_INVALID_PLUGIN_DIR_ERROR        (NPERR_BASE + 7)
  273. #define NPERR_INCOMPATIBLE_VERSION_ERROR    (NPERR_BASE + 8)
  274. #define NPERR_INVALID_PARAM                 (NPERR_BASE + 9)
  275. #define NPERR_INVALID_URL                     (NPERR_BASE + 10)
  276. #define NPERR_FILE_NOT_FOUND                 (NPERR_BASE + 11)
  277. #define NPERR_NO_DATA                         (NPERR_BASE + 12)
  278. #define NPERR_STREAM_NOT_SEEKABLE            (NPERR_BASE + 13)
  279.  
  280. /*
  281.  *    Values of type NPReason:
  282.  */
  283. #define NPRES_BASE                          0
  284. #define NPRES_DONE                               (NPRES_BASE + 0)
  285. #define NPRES_NETWORK_ERR                   (NPRES_BASE + 1)
  286. #define NPRES_USER_BREAK                    (NPRES_BASE + 2)
  287.  
  288. /*
  289.  *    Don't use these obsolete error codes any more.
  290.  */
  291. #define NP_NOERR  NP_NOERR_is_obsolete_use_NPERR_NO_ERROR
  292. #define NP_EINVAL NP_EINVAL_is_obsolete_use_NPERR_GENERIC_ERROR
  293. #define NP_EABORT NP_EABORT_is_obsolete_use_NPRES_USER_BREAK
  294.  
  295. /*
  296.  * Version feature information
  297.  */
  298. #define NPVERS_HAS_STREAMOUTPUT        8
  299. #define NPVERS_HAS_NOTIFICATION        9
  300. #define NPVERS_HAS_LIVECONNECT        9
  301.  
  302.  
  303. /*----------------------------------------------------------------------*/
  304. /*                   Function Prototypes                                */
  305. /*----------------------------------------------------------------------*/
  306.  
  307. #if defined(_WINDOWS) && !defined(WIN32)
  308. #define NP_LOADDS  _loadds
  309. #else
  310. #define NP_LOADDS
  311. #endif
  312.  
  313. #ifdef __cplusplus
  314. extern "C" {
  315. #endif
  316.  
  317. /*
  318.  * NPP_* functions are provided by the plugin and called by the navigator.
  319.  */
  320.  
  321. #ifdef XP_UNIX
  322. char*                    NPP_GetMIMEDescription(void);
  323. NPError                    NPP_GetValue(void *instance, NPPVariable variable,
  324.                                      void *value);
  325. #endif /* XP_UNIX */
  326. NPError                   NPP_Initialize(void);
  327. void                      NPP_Shutdown(void);
  328. NPError     NP_LOADDS    NPP_New(NPMIMEType pluginType, NPP instance,
  329.                                 uint16 mode, int16 argc, char* argn[],
  330.                                 char* argv[], NPSavedData* saved);
  331. NPError     NP_LOADDS    NPP_Destroy(NPP instance, NPSavedData** save);
  332. NPError     NP_LOADDS    NPP_SetWindow(NPP instance, NPWindow* window);
  333. NPError     NP_LOADDS    NPP_NewStream(NPP instance, NPMIMEType type,
  334.                                       NPStream* stream, NPBool seekable,
  335.                                       uint16* stype);
  336. NPError     NP_LOADDS    NPP_DestroyStream(NPP instance, NPStream* stream,
  337.                                           NPReason reason);
  338. int32       NP_LOADDS    NPP_WriteReady(NPP instance, NPStream* stream);
  339. int32       NP_LOADDS    NPP_Write(NPP instance, NPStream* stream, int32 offset,
  340.                                   int32 len, void* buffer);
  341. void        NP_LOADDS    NPP_StreamAsFile(NPP instance, NPStream* stream,
  342.                                          const char* fname);
  343. void        NP_LOADDS    NPP_Print(NPP instance, NPPrint* platformPrint);
  344. int16                     NPP_HandleEvent(NPP instance, void* event);
  345. void                     NPP_URLNotify(NPP instance, const char* url,
  346.                                       NPReason reason, void* notifyData);
  347. jref                    NPP_GetJavaClass(void);
  348.  
  349.  
  350. /*
  351.  * NPN_* functions are provided by the navigator and called by the plugin.
  352.  */
  353.  
  354. #ifdef XP_UNIX
  355. NPError            NPN_GetValue(NPP instance, NPNVariable variable,
  356.                              void *value);
  357. #endif /* XP_UNIX */
  358. void            NPN_Version(int* plugin_major, int* plugin_minor,
  359.                             int* netscape_major, int* netscape_minor);
  360. NPError         NPN_GetURLNotify(NPP instance, const char* url,
  361.                                  const char* target, void* notifyData);
  362. NPError         NPN_GetURL(NPP instance, const char* url,
  363.                            const char* target);
  364. NPError         NPN_PostURLNotify(NPP instance, const char* url,
  365.                                   const char* target, uint32 len,
  366.                                   const char* buf, NPBool file,
  367.                                   void* notifyData);
  368. NPError         NPN_PostURL(NPP instance, const char* url,
  369.                             const char* target, uint32 len,
  370.                             const char* buf, NPBool file);
  371. NPError         NPN_RequestRead(NPStream* stream, NPByteRange* rangeList);
  372. NPError         NPN_NewStream(NPP instance, NPMIMEType type,
  373.                               const char* target, NPStream** stream);
  374. int32           NPN_Write(NPP instance, NPStream* stream, int32 len,
  375.                           void* buffer);
  376. NPError            NPN_DestroyStream(NPP instance, NPStream* stream,
  377.                                   NPReason reason);
  378. void            NPN_Status(NPP instance, const char* message);
  379. const char*     NPN_UserAgent(NPP instance);
  380. void*           NPN_MemAlloc(uint32 size);
  381. void            NPN_MemFree(void* ptr);
  382. uint32          NPN_MemFlush(uint32 size);
  383. void            NPN_ReloadPlugins(NPBool reloadPages);
  384. JRIEnv*            NPN_GetJavaEnv(void);
  385. jref            NPN_GetJavaPeer(NPP instance);
  386.  
  387.  
  388. #ifdef __cplusplus
  389. }  /* end extern "C" */
  390. #endif
  391.  
  392. #endif /* _NPAPI_H_ */
  393.